home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #230 (1993)(Rhein-Sieg-Soft).zip
/
Franz PD Disk #230 (1993)(Rhein-Sieg-Soft).adf
/
Window-Manager
/
Winman.dok
< prev
next >
Wrap
Text File
|
1993-04-15
|
17KB
|
415 lines
Window-Manager V1.2 (Demo)
von
Taurus-Software (1992,93)
Marco Brandt
Zweibrueckerstr. 42
W-6780 (D-66953) Pirmasens
Deutsche Anleitung zur Demoversion von Window-Manager
1. Anwendungsbereich des Programms:
Das Programm Window-Manager dient dazu, dem Benutzter Informationen
über die Elemente des Intuition-Systems (Screens,Windows...) zu
liefern. Es eignet sich deshalb sehr gut zur Fehlersuche in eigenen
Programmen, die das Intuition-System nutzen. Man kann mit Window-Manager
die wichtigsten Daten eines Windows abfragen (z.B. Basisadresse der
Window-Struktur,Adresse der Screen-Struktur,Window-Flags).
Somit ist es möglich, die Fehler eines eigenen Programmes zu erkennen,
ohne Kenntnisse über die internen Betriebssystemstrukturen zu besitzen.
(Wer in Assembler oder C programmiert, besitzt natürlich sowieso Kenntnisse
über Window-Strukturen).
Durch die Funktion, sich die Daten eines Fensters als Assembler-
quellcode ausgeben lassen zu können, ist es möglich, fertige Windows
auf einfachste Weise ins eigene Programm zu übernehmen.
Natürlich ist Window-Manager auch ideal, wenn man einfach etwas über
die interne Verwaltung von Windows unter Intuition erfahren will.
2. Vorliegende Version und Nutzungsrechte:
Es gibt momentan 3 Versionen von Window-Manager:
Version 1.2: Diese Version ist die Demo-Version von Window-Manager.
Sie läuft unter jeder bekannten Version des Betriebs-
systems. Diese Version gestattet die Untersuchung
von Intuition-Windows. Weitere Intuition-Elemente
werden zur Zeit noch nicht unterstützt.
Die Demo-Version darf frei benutzt und kopiert werden,
solange diese Anleitungen und das Programm selbst nicht
verändert werden. Außerdem müssen alle Dateien
in einem Verzeichnis gelassen werden.
Die Verbreitung des Programms ohne die dazugehörigen
Text-Files ist nicht erlaubt. Das Programm darf auf
unbegrenzte Zeit benutzt werden, ohne daß eine Zahlung
an den Autor getätigt werden muß.
Version 1.3: Diese Version ist die erste Vollversion des Programms.
Sie läuft unter jeder bekannten Version des Betriebs-
systems. Die Benutzteroberfläche dieser Version ist
bereits im "2.0er-Look" gestaltet. Bei Window-Manager
V1.3 wird neben dem Fenster-Infoservice auch die
Untersuchung von Screens und Menus unterstützt.
Diese Version ist nur zur Erhaltung der Kompatiblität
mit OS 1.x erstellt worden. Deshalb enthält diese Version
von Window-Manager keinen Update-Service.
Version 1.4: Diese Version ist die endgültige Vollversion des Window-
Manager. Sie ist nur ab Kickstart 2.04 lauffähig.
Es wurden seit Version 1.3 erhebliche Verbesserungen
vorgenommen. Diese Version beinhaltet ein kostenloses
Update (bzw. Upgrade bei erscheinen von WindowMan. 1.5)
Alle Versionen ab V1.3 dürfen nicht frei kopiert werden.
Jeder Benutzer von Window-Manager wird registriert und erhält eine
eigene Benutzernummer. Nur so ist es möglich, alle registrierten
Benutzer über das Erscheinen einer neuen Version von Window-Manager
zu informieren. Das Erstellen von Sicherheitskopien und die
Installation auf Festplatte sind natürlich erlaubt. Lediglich die
Weitergabe an einen nicht registrierten Benutzer ist untersagt.
Ein unrechtmäßiger Besitzer des Programms erhält natürlich kein
Update.
3. Bedienungsanleitung Window-Manager V1.2
3.1 Grundlagen von Intuition:
Damit man die Funktion des Programmes besser versteht, sollte man
wissen, wie Intuition intern die Windows verwaltet.
Für jedes Window gibt es einen eigenen Speicherbereich, in dem die
Informationen über das Window stehen. Dieser Bereich ist 132 Byte
groß und sieht so aus: (unter Kick 1.x)
Struktur Window (definiert im Include-File intuition/intuition.i)
$00 00 APTR Struct Window *NextWindow ;Zeiger auf Nächstes
$04 04 WORD LeftEdge ;X-Koord linker Rand
$06 06 WORD TopEdge ;Y-Koord oberer Rand
$08 08 WORD Width ;Breite
$0A 10 WORD Height ;Höhe
$0C 12 WORD MouseY ;Mausposition Y
$0E 14 WORD MouseX ;Mausposition X
$10 16 WORD MinWidth ;Minimale Breite
$12 18 WORD MinHeight ;Minimale Höhe
$14 20 UWORD MaxWidth ;Maximale Breite
$16 22 UWORD MaxHeight ;Maximale Höhe
$18 24 ULONG Flags ;Window-Flaggen
$1C 28 APTR Struct Menu *Menustrip ;Zeiger auf Menuleiste
$20 32 APTR UBYTE *Title ;Zeiger auf Windowtitle
$24 36 APTR Struct Requester *FirstRequest ;Zeiger auf ersten Req.
$28 40 APTR Struct Requester *DMRequest ;Zeiger auf DMouseReq.
$2C 44 WORD Reqcount ;Anzahl der Requester
$2E 46 APTR Struct Screen *WScreen ;Zeiger auf Screen
$32 50 APTR Struct Rastport *Rport ;Zeiger auf Rastport
$36 54 BYTE Borderleft ;Breite der Ränder
$37 55 BYTE BorderTop
$38 56 BYTE BorderRight
$39 57 BYTE BorderBottom
$3A 58 APTR Struct Rastport *BorderRport ;Zeiger auf RandRport
$3E 62 APTR Struct Gadget *FirstGadget ;Zeiger auf Gadgetliste
$42 66 APTR Struct Window *Parent ;Zeiger auf Vorgänger
$46 70 APTR Struct Window *Descendant ;Zum Schliessen
$4A 74 APTR USHORT *Pointer ;Zeiger auf Mauscursor
$4E 78 BYTE PtrHeight ;Höhe des Mauscursor
$4F 79 BYTE PrtWidth ;Breite des Mauscursor
$50 80 BYTE XOffset ;Markierung Hot-Spot
$51 81 BYTE YOffset
$52 82 ULONG IDCMPFlags ;Message-Flags
$56 86 APTR Struct MsgPort *UserPort ;Zeiger auf Userport
$5A 90 APTR Struct MsgPort *WindowPort ;Zeiger auf Windowport
$5E 94 APTR Struct Intuimessage *MessageKey ;Nachricht von Intuition
$62 98 UBYTE DetailPen ;Vordergrundfarbe
$63 99 UBYTE BlockPen ;Hintergrundfarbe
$64 100 APTR Struct Image *CheckMark ;Zeiger auf Grafik
$68 104 APTR UBYTE *ScreenTitle ;Zeiger auf Screentitle
$6C 108 WORD GZZMouseX ;Mausposition im GZZWin
$6E 110 WORD GZZMouseY
$70 112 WORD GZZWidth ;GZZWin Breite
$72 114 WORD GZZHeight ;GZZWin Höhe
$74 116 APTR UBYTE *ExtData ;Zeiger auf weitere Daten
$78 120 APTR BYTE *UserData ;Zeiger auf eigene Daten
$7C 124 APTR Struct Layer *WLayer ;Zeiger auf Layer für Win
$80 128 APTR Struct Textfont *Ifont ;Zeiger auf Font
Die beiden Zahlen geben zuerst das Offset zur Basisadresse
der Struktur an. Diese Basisadresse erhält man z.B. von der
Funktion OPENWINDOW.
Danach folgt der Datentyp (z.B Byte,Word,Long). Steht kein "U" vor
diesem Datentyp, so kann es sich um eine Größe mit Vorzeichen handeln.
Hier sind die wichtigsten Felder erklärt:
NextWindow: In diesem Langwort befindet sich die Adresse der nächsten
Window-Struktur. Die Strukturen sind in einer sg.
verketteten Liste aneinandergesetzt. In jeder Struktur
befindet sich also ein Zeiger auf den Nachfolger,in
diesem befindet sich wieder ein Zeiger auf die nächste
Struktur. Der Zeiger auf das erste Window im Screen
befindet sich in der Screen-Struktur.
LeftEdge,
TopEdge: Diese Felder beinhalten die X und Y-Koordinaten
relativ zur linken oberen Ecke des Screens in Pixeln.
Width,
Height: Breite und Höhe des Windows in Bildpunkten.
MouseX,Y: Mausposition in Bildpunkten relativ zur linken oberen Ecke
des Windows.
Min,Max-
Width&
Height: Das ist die Größe, die das Window minimal bzw. maximal
annehmen kann. Die maximale Größe ist natürlich durch
den Screen beschränkt.
Flags: Window-Flags. Diese Flags geben an, welche Eigenschaften
das Window hat. Unter Kick 1.x existieren folgende
Windowflags:
Bit 0 ($0001) - WINDOWSIZING : Das Fenster kann seine
Größe ändern.
Bit 1 ($0002) - WINDOWDRAG : Das Fenster kann verschoben
werden (Titelleiste).
Bit 2 ($0004) - WINDOWDEPTH : Das Fenster hat Tiefen-
Gadgets.
Bit 3 ($0008) - WINDOWCLOSE : Das Fenster hat ein Schließ-
Symbol.
Bit 4 ($0010) - SIZEBRIGHT
Bit 5 ($0020) - SIZEBOTTOM
Bit 6 ($0040) - SIMPLE_REFR : Das Fenster meldet nur
Beschädigungen
Bit 7 ($0080) - SUPER_BITMAP : Das Fenster hat eigene
Bitmap (Refresh)
Wenn kein Refresh-Bit gesetzt ist, dann gilt
SMART_REFR.
Bit 8 ($0100) - BACKDROP : Das Fenster ist ein Back-
drop Fenster (wie Workbench)
Bit 9 ($0200) - REPORTMOUSE
Bit 10 ($0400) - GIMMEZEROZERO: Der Rand wird getrennt vom
Fenster verwaltet.
Bit 11 ($0800) - BORDERLESS : Das Fenster hat keinen Rand.
Bit 12 ($1000) - ACTIVATE : Beim Öffnen soll das Fenster
aktiviert werden.
Bit 13 ($2000) - WINDOWACTIVE : Das Fenster ist gerade aktiv.
Bit 14 ($4000) - INREQUEST : Das Fenster hat gerade einen
Requester
Bit 15 ($8000) - MENUMODE : Das Menu vom Fenster wird
gerade angewählt.
Bit 16 $100000 - RMBTRAP : Bei Druck auf rechtem Maus-
knopf soll kein Menu kommen.
MenuStrip: Zeiger auf eine Menustruktur. Da eine Menuleiste
zwar in der Screenleiste erscheint, aber zum Fenster
gehört, steht der Zeiger in der Windowstruktur.
Title: Zeiger auf den Titeltext des Windows, der mit
einem Nullbyte ($00 nicht ASC("0")) abgeschlossen
sein muß.
WScreen: Zeiger auf die Struktur des Screens, auf dem das
Fenster geöffnet ist.
First
Gadget: Zeiger auf eine verkettete Liste aller Gadgets in diesem Window.
IDCMPFlags: Diese Flags bestimmen, bei welchen Ereignissen die
Application von Intuition eine Nachricht erhalten soll.
Wenn nämlich ein Window ein Schließsymbol enthält,
heißt das noch lange nicht, das es damit auch geschlossen
werden kann. (Man nehme nur einmal das Fenster eines
abgestürzten Programmes. Da kann man noch so oft auf
das Close-Gadget klicken, das Fenster wird sich nicht
schließen.) Damit sich das Fenster schließt, muß die
Application (das Anwenderprogramm) die Routine
CLOSEWINDOW aufrufen. Damit sie jedoch überhaupt weiß,
wann das Fenster geschlossen werden soll (wann der User
das Schließsymbol angewählt hat), setzt man das IDCMP-
Flag CLOSEWINDOW. Dann erhält man eine Nachricht von
Intuition im UserPort des Windows, sobald der User
wünscht, es zu schliessen.
Die IDCMP-Flags geben also an, über welche Ereignisse
am Window man informiert werden will.
Es gibt folgende IDCMP-Flags:
SIZEVERIFY : Das Fenstergröße wird geändert
NEWSIZE : Die neue Größe liegt fest
REFRESHWINDOW : Der Inhalt wurde beschädigt
MOUSEBUTTONS : Eine Maustaste gedrückt
MOUSEMOVE : Maus wurde bewegt
GADGETDOWN : Gadget wurde gedrückt
GADGETUP : Gadget wurde losgelassen
REQSET : Requester wurde eingerichtet
MENUPICK : Menu wurde angewählt
CLOSEWINDOW : Closegadget angewählt
RAWKEY : Taste gedrückt (Roh-Format)
REQVERIFY
REQCLEAR : Requester wieder gelöscht
MENUVERIFY
NEWPREFS : Neue Voreinstellungen eingerichtet
DISKINSERTET : Eine Diskette wurde eingelegt
DISKREMOVED : Diskette wurde entfernt
WBENCHMESSAGE
ACTIVEWINDOW : Fenster wurde aktiviert
INACTIVEWINDOW : Fenster wurde deaktiviert
DELTAMOVE : Relative Mauskoordinaten
VANILLAKEY : Taste gedrückt (überarbeitet)
INTUITICKS : Ticks gesendet
Die Flags stehen in der Reihenfolge der gesetzten Bits (0-22).
Userport: Messageport, in dem die Nachrichten von
Intuition ankommen.
WindowPort: Messageport, in den die Nachrichten für
Intuition gesteckt werden.
Screentitle:
Der Zeiger auf den mit $00 beendeten Titeltext des
Screens steht deshalb in der Windowstruktur,
weil der Screen bei jedem Window einen anderen Titel
haben kann (wie beim Menu).
3.2 Window-Manager und die Strukturen
Das Hauptfenster des Window-Manager zeigt wichtige Felder der
Window-Struktur an. Dies wären im einzelnen die Felder für
die Position,Größe,minimale und maximale Größe,Flags,IDCMP,
Adresse der Menustruktur,Adresse des Screens,Adresse der
Window-Struktur und natürlich der Name des Fensters.
In späteren Versionen wird Window-Manager noch weitere Felder
unterstützen, jedoch reichen die Angaben von Window-Manager 1.2
schon aus, um die wichtigsten Daten des Windows zu erkennen.
3.3 Bedienung der Gadgets von Window-Manager 1.2
In der Basis der Intuition.library existiert ein Zeiger auf
das gerade aktive Fenster. Diesen Zeiger kann man mit dem
Gadget "GET INFO" ausnutzen. Dazu klickt man einfach auf das
Gadget und aktiviert danach innerhalb von 3 Sekunden das Fenster,
über das man Informationen haben will. Beim Anwählen des Gadgets
wird natürlich das Fenster vom Window-Manager aktiviert. Falls
man danach kein weiteres Fenster aktiviert, bekommt man die
Informationen über das Fenster vom Window-Manager.
Wie bereits oben erwähnt, sind die Fenster in einer verketteten
Liste organisiert. Jedes Fenster hat also einen Vorgänger und
einen Nachfolger. Mit Hilfe des Gadgets "NEXT" kann man sich
Informationen über den Nachfolger eines Fensters holen.
Falls ein Programm ein offenes Fenster auf der Workbench hat,
und dieses Programm abstürzt, so kann es passieren, daß dieses
Fenster sich nicht mehr schliessen läßt. Da der Amiga ja ein
Multitasking-Betriebssystem hat, kann man in der Regel trotz
des abgestürzten Programmes weiterarbeiten. Das offene Fenster
verbraucht jedoch wertvollen Speicherplatz und stört außerdem
die Arbeitsoberfläche der Workbench. Um das Fenster zu beseitigen,
holt man es sich einfach mit Hilfe von "GET INFO" oder "NEXT" in
den Window-Manager, und kann es dann einfach mit dem Gadget "CLOSE"
schliessen. Bevor jedoch das Fenster geschlossen wird, erscheint
noch ein Requester mit einer Sicherheitsabfrage. Sollte man
nämlich einmal ein Fenster schließen, das noch in Gerauch ist,
so wird das ganze System mit hoher Wahrscheinlichkeit abstürzen.
WARNUNG: Bei diesen Abstürzen handelt es sich meist um
totale Systemabstürze !! Alle Daten, die zu diesem
Zeitpunkt im Speicher waren gehen verloren !!!!!
Mit dem Gadget "SAVE" kann man die Daten des untersuchten Fensters
als NEWWINDOW-Struktur abspeichern. Dazu muß man nur noch den Pfad
und Namen der Datei angeben z.B. RAM:NEWWINDOW, und der Window-Manager
speichert die Struktur im Assemblerformat.
Mit dem Gadget "HEX" kann man die Darstellung der Daten ändern.
Nach dem Klicken auf dieses Gadget werden die Daten dezimal angezeigt.
Das dezimale Format ist natürlich leichter zu verstehen als die
hexadezimale Darstellung. Dafür kann es allerdings vorkommen, daß die
angezeigte Zahl nicht ganz in das Display passt.
Mit dem "?" kann man sich noch einmal eine Kurzzusammenfassung
der Gadgets geben lassen.
Mit dem Closegagdet kann man das Programm beenden.
4. Vorschau auf die Vollversionen:
Wer jetzt den Window-Manager schon für ein gutes Utility hält,
wird sich über den Funktionsumfang der Vollversionen erst recht
freuen. Window-Manager V1.2 ist ja immerhin nur eine Demoversion
und hat nur ca. 1/4 des Funktionsumfangs der Version 1.3.
Und bei Version 1.4, die dann nur noch unter Kickstart 2.04 läuft
kommt noch eine Unzahl neuer Funktionen hinzu.
Nun aber zu den konkreten Änderungen von 1.2 auf 1.3:
Ein ähnliches Info-Fenster, wie es jetzt für die Windows vorhanden
ist, wird es auch für die Screens geben.
* Funktion zum Schließen toter Screens.
* Holen des ersten Fensters des Screens
* Neues Fenster zum Untersuchen von Menus
* Unterstützung von Tastaturkommandos
* weiteres Hilfesystem
* Routine zum Modifizieren der Closewindow-Routine
* Schließen eines Fensters kann verhindert werden
* Strukturspeicherung auch bei Screens möglich
* lauffähig unter Kick 1.0 bis 3.0 (getestet auf 1.2,1.3 und 2.04)
* Fehler im 60-Zeichenmodus behoben
* 2.0er-Look (3D-Oberfläche)
* mehr Gadget Auswahlmöglichkeiten
* englische und deutsche Version verfügbar
Verbesserungen auf Window-Manager V1.4:
(zusätzlich zu denen auf V1.3)
* vernünftiger ASL-Filerequester
* Unterstützung der neuen IntuiItem-Flags
* Unterstützung der ECS-Viewmodes bei Screens
* Listenfunktion zur besseren Auswahl der Windows/Screens/Menus...
* Abspeichern von Strukturen und Taglisten möglich
* Freibabe des "Ändern"-Gadgets
* Ein (1!) kostenloses Update/Upgrade für registrierte Benutzer
Achtung: Wenn Sie Kickstart 2.04 oder höher besitzen, sollten Sie auf
jeden Fall Window-Manager 1.4 bestellen. Nur diese und die
nachfolgenden Versionen nutzen die Fähigkeiten des neuen
Betriebssystems voll aus !
M.Brandt
Zweibrueckerstr. 42
W-6780 (D-66953) Pirmasens